/**
* @author GodSon
* http://www.btboys.com
* date 2011-5-12 12:30	version 2.1
* @How to use
* var path = 'page/newFile.html';
*	var confing = {
*		url : path,
*		title : "标题",
*		width : 500,
*		height : 150,
*		maximizable : false,
*		buttons : [{
*				text : '继续>>',
*				handler : function() {
*					fun(GETWIN(this));
*				}
*		}]
*	};
*	var curDialogId = $.createWin(confing);
*	销毁	
*  $(GETWIN(curDialogId)).destroy(); 
*/

/**
* @param {Object} options
* return windowId
*/
(function ($) {
    /**
    * 创建UUID
    */
    function S4() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }
    /**
    * 生成windowId
    */
    function CreateIndentityWindowId() {
        return "UUID-" + (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
    }
    /**
    * 销毁
    */
    function destroy(target) {
        var options = $(target).dialog("options");
        if (options.fck) {
            $("body").children("iframe").remove();
            KE.remove(options.fck.id);
        }
        if (options.ke) {
            KE.remove(options.ke.id);
        }
        $(target).dialog("destroy");
    }

    /**
    * 获取当前操作的window 
    *  @param target 当前窗口的windowId 或者 当前窗口中的元素(element)
    */
    function getWindow(target) {
        if (typeof target == "string") {
            return document.getElementById(target);
        } else {
            return $(target).parents(".window-body");
        }
    }

    //入口方法
    $.createWin = function (options) {
        if (!options.url && !options.content) {
            $.messager.alert("提示", "缺少必要参数!(url or content)");
            return false;
        }

        var windowId = CreateIndentityWindowId();

        if (options.winId) {
            windowId = options.winId;
        }

        //如果存在buttons(请看easyui对buttons的定义)，默认添加关闭按钮
        if (options.buttons) {
            var closeBtn = {
                text: '关闭',
                handler: function () {
                    $("#" + windowId).dialog("destroy");
                }
            };
            options.buttons.push(closeBtn);
        }

        options = $.extend({}, $.createWin.defaults, options || {});

        if (options.content) {
            ajaxSuccess(options.content);
        } else {
            if (!options.isIframe) {
                $.ajax({
                    url: options.url,
                    type: "GET",
                    cache:false,
                    data: options.data == null ? "" : options.data,
                    success: function (date) {
                        ajaxSuccess(date);
                    },
                    error: function () {
                        $.messager.alert("提示", "加载失败！");
                    }
                });
            } else {
                ajaxSuccess();
            }
        }
        return windowId;

        /**
        * 页面加载成功处理
        */
        function ajaxSuccess(date) {
            var dialog = $('<div id="' + windowId + '"></div>');
            if (options.target == 'body') {
                dialog.appendTo(options.target);
            } else {
                options.inline = true;
                dialog.appendTo($(options.target));
            }
            if (options.isIframe && !date) {
                $(dialog).html('<iframe width="100%" height="100%" frameborder="0" src="' + options.url + '" ></iframe>');
            } else {
                $(dialog).html(date);
            }

            dialog.dialog(options);
            dialog.dialog('open');

            options.onComplete.call(this, windowId); 								//创建成功后回调函数
            //可以整合fck的显示
            // options.fck:{
            // 		"id":textAreaIdORtextAreaName,
            //  	"height":fckHeight
            // }
            if (options.fck) {
                CKEDITOR.replace(options.fck.id, {
                    height: options.fck.height
                });
            }
            //可以整合KindEditor的显示
            // options.ke:{
            // 		"id":textAreaId
            // }
            if (options.ke) {
                KE.init(options.ke);
                KE.create(options.ke.id);
            }
        }
    };

    //关闭并销毁实体
    $.closeWin = $.fn.destroy = function (e) {
        if (e) {
            destroy($(e).parents(".window-body"));
        }
        else {
            destroy(this);
        }
    };

    window.GETWIN = getWindow;

    //默认参数
    $.createWin.defaults = $.extend({}, $.fn.dialog.defaults, {
        url: '', 				//窗口要加载的html片段地址
        data: '', 			//可带参数，data类型为jqurey.ajax的data参数类型
        target: 'body', 			//指定窗口打开的区域,是一个jq的选择器，例如#id
        isIframe: false, 		//如果存在url，是否在iframe里面打开url
        zIndex: 100000,
        height: 200,
        width: 400,
        collapsible: false,
        minimizable: false,
        maximizable: false,
        closable: true,
        modal: true,
        onClose: function () {
            destroy(this);
        },
        onMove: function (left, top) {
            var opts = $.data(this, 'panel').options;
            if (top < 0) {
                $(this).dialog("move", { "left": left, "top": 0 });
            } else if (opts.maximized) {
                $(this).dialog("restore");
                $(this).dialog("move", { "left": left + 100, "top": top });
            }
            if (top > ($(opts.target).height() - 20)) {
                $(this).dialog("move", { "left": left, "top": ($(opts.target).height() - 25) });
            }
        },
        onComplete: function (windowId) { } //创建成功后的回调方法		
    });
})(jQuery);
